#include <iostream>

using namespace std;

template <class T>
class STACK
{
public:
    STACK(int n):top(0) { };
    ~STACK(){};
    void push(T data);
    void pop();
    void display();
    int size();
private:
    T data[100];
    int top;
};


// FIXME: 用 `const T& element` 更好，我看你其他程序用的是const T&
template <class T>
void STACK<T>::push(T element)
{
    // FIXME: 如果top超过100如何？
    data[++top]=element;
};

template <class T>
void STACK<T>::pop()
{
    // FIXME: 如果弹出完了？
    top--;
};

template <class T>
void STACK<T>::display()
{
    int temp=top;
    while(temp>0)
    {
        cout<<data[temp]<<"  ";
        temp--;
    }
    cout<<endl;
};

template<class T>
int STACK<T>::size()
{
    return top;
};


int main()
{
    STACK<int> a(1);

    for(int i=1;i<6;i++)
    {
        a.push(i*3);
    };
    a.display();

    a.pop();
    a.display();

    cout<<a.size()<<endl;

    system("pause");
    return 0;
}




